package com.ruoyi.service.production;

import com.ruoyi.domain.production.MesProductionPicking;

import java.util.List;

/**
 * 生产领料单Service接口
 * 
 * @author ruoyi
 */
public interface IMesProductionPickingService
{
    /**
     * 查询生产领料单
     * 
     * @param pickingId 生产领料单主键
     * @return 生产领料单
     */
    public MesProductionPicking selectMesProductionPickingByPickingId(Long pickingId);

    /**
     * 查询生产领料单列表
     * 
     * @param mesProductionPicking 生产领料单
     * @return 生产领料单集合
     */
    public List<MesProductionPicking> selectMesProductionPickingList(MesProductionPicking mesProductionPicking);

    /**
     * 校验领料单编号是否唯一
     * 
     * @param pickingCode 领料单编号
     * @param pickingId 领料单ID（编辑时传入，新增时为null）
     * @return 结果
     */
    public boolean checkPickingCodeUnique(String pickingCode, Long pickingId);

    /**
     * 根据工单ID查询领料单列表
     * 
     * @param workOrderId 工单ID
     * @return 领料单集合
     */
    public List<MesProductionPicking> selectPickingListByWorkOrderId(Long workOrderId);

    /**
     * 根据仓库ID查询领料单列表
     * 
     * @param warehouseId 仓库ID
     * @return 领料单集合
     */
    public List<MesProductionPicking> selectPickingListByWarehouseId(Long warehouseId);

    /**
     * 新增生产领料单
     * 
     * @param mesProductionPicking 生产领料单
     * @return 结果
     */
    public int insertMesProductionPicking(MesProductionPicking mesProductionPicking);

    /**
     * 修改生产领料单
     * 
     * @param mesProductionPicking 生产领料单
     * @return 结果
     */
    public int updateMesProductionPicking(MesProductionPicking mesProductionPicking);

    /**
     * 批量删除生产领料单
     * 
     * @param pickingIds 需要删除的生产领料单主键集合
     * @return 结果
     */
    public int deleteMesProductionPickingByPickingIds(Long[] pickingIds);

    /**
     * 删除生产领料单信息
     * 
     * @param pickingId 生产领料单主键
     * @return 结果
     */
    public int deleteMesProductionPickingByPickingId(Long pickingId);

    /**
     * 审核生产领料单
     * 
     * @param pickingId 领料单ID
     * @param status 审核状态
     * @return 结果
     */
    public int auditMesProductionPicking(Long pickingId, String status);

    /**
     * 执行生产领料
     * 
     * @param pickingId 领料单ID
     * @return 结果
     */
    public int executeMesProductionPicking(Long pickingId);
}